var mot=MouseOverTimeout={
	overList:{},
	outList:{},
	timeout:{},
	delay:300,
	over:function(obj,over){
		var timeoutId=this.getTimeoutId(obj);
		if(!this.overList[timeoutId]){
			this.overList[timeoutId]=this.getFun(obj,over);
		}
		this.clearTimeout(timeoutId);
		this.timeout[timeoutId]=setTimeout(this.overList[timeoutId],this.delay);
	},
	out:function(obj,out){
		if(out) {
			out=this.getFun(obj,out);
			out();
		}
		var timeoutId=this.getTimeoutId(obj)
		if(this.isExistTimeout(timeoutId)){
			this.clearTimeout(timeoutId);
		}
		else{
			window.status+='t';
		}
	},
	getTimeoutId:function(obj){
		if(typeof obj=='string'){
			return obj;
		}
		else if(typeof obj=='object'){
			if(!obj._timeoutId){
				obj._timeoutId='timeout'+this.getRnd();
			}
			return obj._timeoutId;
		}
		else{
			alert('timeoutId error');
		}
	},
	getFun:function(obj,fun){
		_this=this;
		return function(){
			var timeoutId=_this.getTimeoutId(obj);
			if(_this.timeoutId==timeoutId) return;
			_this.timeoutId=timeoutId;
			if(fun){
				if(typeof fun=='string'){
					try{
						eval(fun);
					}
					catch(e){};
				}
				else if(typeof fun=='function') fun();
			}
		};
	},
	setDelay:function(time){
		this.delay=time;
	},
	getRnd:function(){
		var d=new Date();
		return d.getTime+'_'+Math.floor(1000*Math.random());
	},
	isExistTimeout:function(timeoutId){
		if(this.timeout[timeoutId]) return true;
		else return false;
	},
	clearTimeout:function(timeoutId){
		if(this.timeout[timeoutId])clearTimeout(this.timeout[timeoutId]);
	}
};
